﻿using System.Web.Http;
using System.Web.Mvc;
using Castle.Core.Logging;
using User.Global.Contracts.Message;

namespace User.Web.UI.Controllers.BaseControllers
{
    /// <summary>
    /// Abstrakte Basisklasse für alle Controller, welche zusätzlich noch die Message und den Logger enthält.
    /// Da diese beiden Properties in jedem Controller benötigt werden. Die Properties selbst werden direkt 
    /// per Property Injection vom Di Container gesetzt.
    /// </summary>
    public abstract class ControllerApiBase : ApiController
    {
        /// <summary>
        /// Logger, dieser wird automatisch per Windsor Container Initialisiert,
        /// da der Container auch alle Properties prüft wenn eine Instanz vom Controller erstellt wird.
        /// </summary>
        public ILogger Logger { get; set; }

        /// <summary>
        /// AddMessage, dieser wird automatisch per Windsor Container Initialisiert,
        /// da der Container auch alle Properties prüft wenn eine Instanz vom Controller erstellt wird.
        /// </summary>
        public IAddMessage AddMessage { get; set; }
    }
}
